export default {
	  namespaced: true,
		state: () => ({
		  // 购物车的数组，用来存储购物车中每个商品的信息对象
		  // 每个商品的信息对象，都包含如下 6 个属性：
		 cart: JSON.parse(uni.getStorageSync('carts') || '[]'),
			radios:false
		}),
		actions:{
			addDataListCart(context,goods){
				  return new Promise(resolve => {
				       const findResult = context.state.cart.find(x => x.id === goods.id)
				       			
				       if (!findResult) {
								 
								 context.commit('increment',goods)
				       } else {
				         findResult.goods_count++
				       }      			
							  resolve('加入成功')
				      });
				    }
			
		},
		mutations:{
			increment(state,goods) {
			            state.cart.push(goods)
									this.commit('m_cart/saveToStorage')
			            },
			addToCart(state, goods) {
			  const findResult = state.cart.find(x => x.id === goods.id)
			
			  if (!findResult) {
			    state.cart.push(goods)
			  } else {
			    findResult.goods_count++
			  }
			
			  this.commit('m_cart/saveToStorage')
			},
		
			// 更新购物车中商品的勾选状态
			updateGoodsState(state, goods) {
				  const findResult = state.cart.find(x => x.id === goods.id)
					if (findResult) {
				    findResult.ckbox = goods.ckbox
				}
				 this.commit('m_cart/saveToStorage')
			},
			saveToStorage(state) {
			  uni.setStorageSync('carts', JSON.stringify(state.cart))
			},
			
			// 根据 Id 删除对应的商品
			removeGoodsById(state, id) {
			  state.cart = state.cart.filter(x => x.id !== id)
			  this.commit('m_cart/saveToStorage')
			},
			// 更新购物车中所有商品的勾选状态
			updateAllGoodsState(state, newState) {
			  state.cart.forEach(x => x.ckbox = newState)
			
			  this.commit('m_cart/saveToStorage')
			}
		},
		getters: {
		  // 购物车中所有商品的总数量
		  total(state) {
		    return state.cart.reduce((total, item) => total += item.goods_count, 0)
		  },
		  // 购物车中已勾选商品的总数量
		  checkedCount(state) {
		    return state.cart.filter(x => x.ckbox).reduce((total, item) => total += item.goods_count, 0)
		  },
		  // 已勾选商品的总价格
		  checkedGoodsAmount(state) {
		    return state.cart.filter(x => x.goods_state).reduce((total, item) =>
				 total += item.goods_count * 
				item.goods_price, 0).toFixed(2)
		  }
		}
		
}